package models

import (
	"time"

	"gorm.io/gorm"
)

// 支付记录
type Payment struct {
	gorm.Model
	OrderID       uint       `gorm:"not null;index"`           // 订单ID
	Order         Order      `gorm:"foreignKey:OrderID"`       // 订单关联
	Amount        float64    `gorm:"not null"`                 // 支付金额
	PaymentMethod string     `gorm:"not null"`                 // 支付方式：alipay（支付宝）, wechat（微信）, credit_card（信用卡）
	Status        string     `gorm:"not null;default:pending"` // 状态：pending（待支付）, success（成功）, failed（失败）, refunded（已退款）
	TradeNo       string     // 第三方支付交易号
	RefundAmount  float64    // 退款金额
	RefundTime    *time.Time // 退款时间
	Remark        string     // 备注
}

// 退款记录
type Refund struct {
	gorm.Model
	PaymentID   uint       `gorm:"not null;index"`           // 支付记录ID
	Payment     Payment    `gorm:"foreignKey:PaymentID"`     // 支付记录关联
	Amount      float64    `gorm:"not null"`                 // 退款金额
	Reason      string     `gorm:"not null"`                 // 退款原因
	Status      string     `gorm:"not null;default:pending"` // 状态：pending（处理中）, success（成功）, failed（失败）
	RefundNo    string     // 退款单号
	ProcessorID uint       // 处理人ID
	ProcessTime *time.Time // 处理时间
	Remark      string     // 备注
}
